package com.pew.tasktimer.domain;

import org.testng.annotations.Test;

public class TaskTimerPackageTest {

  @Test
  public void getRunningTask() {
	  Task lTask = new Task();
	  lTask.startTimer();
	  lTask.setcStrNote("Started and stopped timer.");
	  lTask.stopTimer(lTask.getClStartTime() + 120000);
	  
	  TaskTimerPackage lTTP = new TaskTimerPackage();
	  lTTP.addTask(lTask);
	  
	  lTask = new Task();
	  lTask.setcStrNote("Timer not stopped.");
	  lTask.startTimer();
	  
	  lTTP.addTask(lTask);
	  
	  Task lRunningTask = lTTP.getLatestRunningTask();
	  
	  assert (lRunningTask.getNote().equals("Timer not stopped."));
	  
  }
  
  @Test
  public void getLatestRunningTasks_2() {
	  Task lTask = new Task();
	  lTask.startTimer();
	  lTask.setcStrNote("Started and stopped timer.");
	  lTask.stopTimer(lTask.getClStartTime() + 120000);
	  
	  TaskTimerPackage lTTP = new TaskTimerPackage();
	  lTTP.addTask(lTask);
	  
	  lTask = new Task();
	  lTask.setcStrNote("Timer not stopped.");
	  lTask.startTimer();
	  try {
	  	Thread.sleep(1000);
	  } catch (Exception ex)
	  {
		  ex.printStackTrace();
	  }
	  
	  lTTP.addTask(lTask);
	  
	  lTask = new Task();
	  lTask.setcStrNote("Timer not stopped b.");
	  lTask.startTimer();
	  
	  lTTP.addTask(lTask);
	  
	  Task lRunningTask = lTTP.getLatestRunningTask();
	  
	  assert (lRunningTask.getNote().equals("Timer not stopped b."));
  }
  
  @Test
  public void stopRunningTasks() {
	  Task lTask = new Task();
	  lTask.startTimer();
	  lTask.setcStrNote("Started and stopped timer.");
	  lTask.stopTimer(lTask.getClStartTime() + 120000);
	  
	  TaskTimerPackage lTTP = new TaskTimerPackage();
	  lTTP.addTask(lTask);
	  
	  lTask = new Task();
	  lTask.setcStrNote("Timer not stopped.");
	  lTask.startTimer();
	  
	  lTTP.addTask(lTask);
	  
	  lTask = new Task();
	  lTask.setcStrNote("Timer not stopped b.");
	  lTask.startTimer();
	  
	  lTTP.addTask(lTask);
	  
	  lTask.startTimer();
	  lTask.setcStrNote("Started and stopped timer. (B)");
	  lTask.stopTimer(lTask.getClStartTime() + 120000);
	  
	  lTTP.stopRunningTasks();
	  
	  Task lRunningTask = lTTP.getLatestRunningTask();
	  
	  assert (lRunningTask == null);
  }
  
  @Test
  public void getTasks()
  {
	  Task lTask = new Task();
	  lTask.startTimer();
	  lTask.setcStrNote("Started and stopped timer.");
	  lTask.stopTimer(lTask.getClStartTime() + 120000);
	  
	  TaskTimerPackage lTTP = new TaskTimerPackage();
	  lTTP.addTask(lTask);
	  
	  lTask = new Task();
	  lTask.setcStrNote("Timer not stopped.");
	  lTask.startTimer();
	  
	  lTTP.addTask(lTask);
	  
	  assert (lTTP.getTasks().length == 2);
  }
}
